草庐IT

SQLite 和并发

全部标签

java - java在 objective-c 中的并发hashmap的等价物

我有一个由并行线程访问的NSMuableDictionary,其中很少有线程会枚举,也很少有线程会发生变异。但是我们无法实现这一点,因为"Collectionscannotbemutatedduringenumeration"。考虑使用NSLock,但是在枚举完成之前锁定字典会导致性能下降。在java中我们有足够聪明的并发hashmap来处理这种情况。有没有在iOS中实现这个更好的想法?请帮助。 最佳答案 对Objective-C容器的读/写访问通常不是线程安全的。您可以通过将容器与专用调度队列相关联,然后在该队列上执行所有读写访问

objective-c - 将文本字段中的数据插入 SQLite 数据库

我正在尝试将数据插入到我的SQLite数据库中。我已经导入了我的项目所需的所有neccassry框架和数据库文件。在我的Controller类xib中,有两个文本字段和一个按钮。当我单击按钮时,我希望将输入到两个文本字段中的数据保存在我的数据库中。在我的appdelagate中,我创建了两个函数,一个用于附加数据库路径,另一个用于将数据插入数据库。在插入函数中,我检查某些条件,即,如果添加了数据,应显示一个警报View,显示添加的记录,但是当我添加一条新记录时,它总是进入elseblock,这是一个错误。-(void)checkAndCreateDB{NSString*database

ios - 以编程方式将 Sqlite 表数据导出到 csv 文件

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:ExportingSqlitetabledatatocsvfileprogramatically-xcodeiOS5(foranipadapp)我正在开发一个简单的应用程序。我正在使用sqlite将数据保存到表中(在本地,在应用程序文档文件夹中)。我想有问题地将此表数据导出到csv文件中,然后通过电子邮件将其发送给某个人。我的意思是我想在iPad中转换后物理访问csv文件....任何人都可以提供示例应用程序下载吗?还是代码?请帮忙

ios - iOS SQLite3 中 SQLite 更新语句的可能性

我的iOS应用程序使用SQLite3数据库,到目前为止我已经成功创建表、插入值然后选择它们。但是,现在我想更新。我试过这个:UPDATEfieldWHERE_id=5(name,type,state)VALUES(?,?,?)但是SQLite告诉我WHERE附近存在语法错误据我所知,SQLite可能不支持上面的语法,更喜欢它的格式如下。UPDATEfieldSETname="Upper"type="Pigs"state=1WHERE_id=5;但是请注意,在第二条语句中没有(?,?,?)(我相信它称为参数化查询)用于将值动态插入到SQL字符串中。告诉我这可能吗?如果可能的话如何?

iphone - sqlite 准备语句错误-没有这样的表

我的sqliteprepare语句有些困难。我收到一条错误消息,说我的表不存在,尽管我已经在多个地方检查过它,但它确实存在,所以我很困惑。该文件位于正确的iPhone模拟器应用程序文件夹中文件已添加到我的项目中并可在项目导航器中查看它也在我的构建阶段——CopyBundleResources区域。我打扫干净并重新开始运行。数据库存在并且运行我的sql语句让我得到结果符合我的预期。-(NSMutableArray*)getMyWorkout{NSMutableArray*workoutArray=[[NSMutableArrayalloc]init];@try{NSFileManager

ios - 并发和同步执行

我正在阅读OReilly的iOS6ProgrammingCookbook并且对某些事情感到困惑。引自第378页,第6章“并发”:对于任何不涉及UI的任务,您可以在GCD中使用全局并发队列。这些允许同步或异步执行。但同步执行并不意味着您的程序在继续之前等待代码完成。它只是意味着并发队列会等到你的任务在它之前完成继续队列中的下一个代码块。当您将block对象放在并发队列,您自己的程序总是立即继续,而无需等待执行代码的队列。这是因为并发队列,顾名思义,在主线程以外的线程上运行他们的代码。我将引起我兴趣的文字加粗了。我认为这是错误的,因为正如我今天刚刚了解到的那样,同步执行恰恰意味着程序在继续

Go 语言为什么不支持并发读写 map?

大家好,我是frank,「Golang语言开发栈」公众号作者。01介绍在Go语言项目开发中,我们经常会使用哈希表map,它的时间复杂度是O(1),Go语言中的map使用开放寻址法避免哈希碰撞。Go语言中的map并非原子操作,不支持并发读写操作。Go官方认为map在大多数情况下是使用map进行并发读操作,仅在少数情况下是使用map进行并发读写操作。如果Go语言中的map原生支持并发读写操作,在操作时需要先获取互斥锁,反而会降低只有并发读操作时的性能。在需要并发读写操作map时,可以结合sync包中的互斥锁一起使用。02并发读写mapGo支持并发读map,不支持并发读写map。示例代码:funcm

ios - 如何在 iOS 中以 WAL 模式打开 SQLite 连接

如何在iOS中以WAL模式打开SQLite连接。通常我使用sqlite3_open_v2打开它。这是C#答案,但如何在Swift中做到这一点?HowtoopenSQLiteconnectioninWALmode 最佳答案 您可以在打开数据库后运行WAL模式的pragma语句。sqlite3_exec(dbHandle,"PRAGMAjournal_mode=WAL;",0,0,0); 关于ios-如何在iOS中以WAL模式打开SQLite连接,我们在StackOverflow上找到一个类

iOS SQLite : How to automatically set foreign key?

我的app用的是SQLite,我整理了一下建表语句。这个想法是表A和表B具有一对多(或一个)关系,因此外键将在表B中。现在我知道创建主键的自动增量,但这如何用于外键?如果我为表A添加一行,为表B添加5行(理想情况下,所有这些都链接到表A中的那一行)会怎么样?它不会只是从表B中的001-005自动递增吗? 最佳答案 是的,如果A和B之间是一对多的,并且当你在B中添加记录时,你将自动增加B的主键,而不是A的外键(假设你将它设为普通的INTEGER,没有AUTOINCREMENT)。给定你的例子,是的,B将有五个记录,1-5,它们都指向A

Go 语言为什么不支持并发读写 map?

大家好,我是frank,「Golang语言开发栈」公众号作者。01介绍在Go语言项目开发中,我们经常会使用哈希表map,它的时间复杂度是O(1),Go语言中的map使用开放寻址法避免哈希碰撞。Go语言中的map并非原子操作,不支持并发读写操作。Go官方认为map在大多数情况下是使用map进行并发读操作,仅在少数情况下是使用map进行并发读写操作。如果Go语言中的map原生支持并发读写操作,在操作时需要先获取互斥锁,反而会降低只有并发读操作时的性能。在需要并发读写操作map时,可以结合sync包中的互斥锁一起使用。02并发读写mapGo支持并发读map,不支持并发读写map。示例代码:funcm